#pragma once
#include "Binding/BoundNode.hpp"
#include "Binding/BoundStatement.hpp"

#include <memory>
#include <vector>

class BoundBlockStatement : public BoundStatement
{
public:
    std::vector<SharedBoundStatement> Statements;

public:
    BoundBlockStatement(std::vector<SharedBoundStatement> statments) : BoundStatement(BoundNodeKind::BlockStatement), Statements(statments) {}

public:
    virtual std::vector<SharedBoundNode> GetChildren() override
    {
        std::vector<SharedBoundNode> children;

        for (auto statement : this->Statements)
        {
            children.push_back(statement);
        }

        return children;
    }
};

typedef  std::shared_ptr<BoundBlockStatement>  SharedBoundBlockStatement;